#导入班级数据
import json

# 函数工具
from functools import partial

#导入弹窗模块
from tkinter import messagebox
import tkinter as tk

# 导入常量
from const import *

# 创建主窗口
window = tk.Tk()
window.title('灿哥的作业1.0')
window.geometry('300x100')

# 全局变量
var1 = tk.StringVar()
var = tk.StringVar()


# ================================函数模块==============================
#定义关于函数
def guanyu():
    var1.set('<关于>启动成功！')
    tk.messagebox.showinfo(title='灿哥的作业1.0版本----QianXixi', message=ABOUT_MODDOC)

#使用说明书的函数内容：
def b1_xixi():
    #弹窗的标题设置为使用说明
    var1.set('<使用说明>启动成功！')
    tk.messagebox.showinfo(title='使用说明', message=FUNCTION_hELPDOC)

#定义一个累加函数
def sum_(i, j):
    return i + j + (1, 5, 9, 13)[i]
    # if i == 0:
    #     return i + j + 1
    # if i == 1 :
    #     return i + j + 5
    # elif i == 2:
    #     return i + j + 9
    # elif i == 3:
    #     return i + j + 13
    

#定义一个启动25个功能按钮的函数
def func():
    var1.set('<功能大全>启动成功！')
    #定义功能按钮
    window1 = tk.Tk()
    window1.title('功能大全')
    window1.geometry('480x200')
    # for i in range(4):
    #     for j in range(5):
    for i in range(20):
        i, j = i // 5, i % 5
        button = tk.Button(window1, text=f"功能按钮 {sum_(i, j)}")
        button.grid(row=i, column=j, padx=10, pady=10)
    window1.mainloop()

#定义一个点击按钮函数
def hit():
    var1.set('<数据刷新>启动成功！')

#定义数据库作业提交情况
def database():
    return 0
#定义作业提交情况函数
def st_wk(a):
    import os
    with open("班级数据.json", "r", encoding="utf-8") as f:
        content = json.load(f)
    window3=tk.Tk()
    window3.title(f"{content['AllStudent'][a]['name']}的交作业情况：")
    print(f"laoyu: {content['AllStudent'][a]['name']}的交作业情况：")
    window3.geometry('700x300')
    count1 = 0
    with open("班级课程.json", "r", encoding="utf-8") as f1:
        content1 = json.load(f1)
    # for i in range(4):
    #     for j in range(3):
    for i in range(12):
        i, j = i // 3, i % 3
        # print(f'{i, j}')
        if count1 == len(content1):
            break
        b3 = os.listdir(content1[count1])
        flag = 0
        for i1 in b3:
            if (content['AllStudent'][a]['name']) in i1:
                var = '作业已提交'
                flag = 1
                break
        if flag == 0:
            var = '作业未提交'
        tk.Label(window3, text=f'{content1[count1]}作业：{var}').grid(row=i, column=j, padx=20, pady=20)
        count1 += 1
    window3.mainloop()

#定义数据输入函数
def data_in():
    var1.set('<导入数据>启动成功！')
    window2=tk.Tk()
    window2.title('导入数据')
    window2.geometry('850x300')
    # tk.Label(window2,text='请输入您的数据：',bg='light yellow',width=60,height=1).pack()
    #姓名跟背景
    # tk.Label(window2,text='姓名：',width=4,height=1).place(x=10,y=20)
    # tk.Entry(window2,show=None,bg='light green',width=6).place(x=40,y=20)
    with open("班级数据.json", "r", encoding="utf-8") as f:
        content = json.load(f)
    # def i_name():
    #     for i in content['AllStudent']:
    #         print(i['name'])
    #         return i['name']
            # tk.Label(window2,text='姓名：'+kl,bg='light green',width=20,height=20).place(x=10*lo,y=20*lo)
    count = 0
    # for i in range(6):
    #     for j in range(8):
    for i in range(48):
        i, j = i // 8, i % 8
        if count == len(content['AllStudent']):
            break
        action_with_arg = partial(st_wk, count)
        button = tk.Button(window2, text=f"姓名： {content['AllStudent'][count]['name']}",command=action_with_arg)
        count += 1
        button.grid(row=i, column=j, padx=10, pady=10)
    window2.mainloop()


#定义数据输出函数
def data_out():
    var1.set('<导出数据>启动成功！')
    window2=tk.Tk()
    window2.title('导出数据')
    window2.geometry('480x200')
    tk.Label(window2,text='请输入您的数据：',bg='light yellow',width=60,height=1).pack()
    #姓名跟背景
    tk.Label(window2,text='姓名：',width=4,height=1).place(x=10,y=20)
    tk.Entry(window2,show=None,bg='light green',width=6).place(x=40,y=20)
    window2.mainloop()

#================================菜单模块==============================
#定义窗口菜单变量
m1=tk.Menu(window)
#定义菜单内菜单变量
f1=tk.Menu(m1, tearoff=0)
f2=tk.Menu(m1, tearoff=0)

#定义窗口菜单
m1.add_cascade(label='输入', menu=f1)
m1.add_cascade(label='输出', menu=f2)
m1.add_cascade(label='关于', command=guanyu)
#定义菜单内菜单
f1.add_command(label='导入数据', command=data_in)
f2.add_command(label='导出数据', command=data_out)
#===================================标签和按钮模块===============================

#定义标签样式
l=tk.Label(window,textvariable=var1,bg='light blue',width=60,height=2).pack()
#定义按钮b1
#实现的功能：使用说明
b1=tk.Button(window,text='使用说明 ',width=9,height=1,command=b1_xixi).place(x=10,y=40)
#定义功能大全按钮
b1=tk.Button(window,text='功能大全',width=9,height=1,command=func).place(x=110,y=40)
#定义按钮b0
b0=tk.Button(window,text='数据刷新',width=9,height=1,command=hit).place(x=210,y=40)

#=======================启动模块=========================
window.config(menu=m1)
window.mainloop()